
#include<bits/stdc++.h>
#define sd(n) scanf("%d",&n) 
#define pd(n) printf("%d", (n))
const int N=1e5;
#define x first
#define y second
using namespace std;
//----------------------------------------------------------------------------//
typedef pair<int, int> PII;
int n, m,op=0;
bool st[N+10];//量小,直接st表示1e5以内的所有情况的f与t
int sum=0;
PII q[N+10];
int bfs()
{
    int hh = 0, tt = 0;
    q[0] = {n,op};

    while(hh <= tt)
    {
        PII t = q[hh++];

        int num=t.x;
        int op=t.y;
        if(num==m) return op;
        if(num+1<=N&&!st[num+1]) q[++tt]={num+1,op+1},st[num+1]=true;
        if(num-1>=0&&!st[num-1]) q[++tt]={num-1,op+1},st[num-1]=true;
        if(num*2<=N&&!st[num*2]) q[++tt]={num*2,op+1},st[num*2]=true;
    }
    
}
int main() 
{
    sd(n);sd(m);
    cout << bfs() << endl;
    return 0;
}

